package generic;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @author SWJ
 * @create 2021-06-22 14:00
 * 提示并接受用户输入的字数，并统计出现的次数
 */
public class TestMap3 {
    public static void main(String[] args) {
        //1.提示并接受用户要统计的字符串
        System.out.println("请输入您要统计的字符串：");
        String input = new Scanner(System.in).nextLine();
        //2.指定map结构来存储数据
        /*因为map的K-V具有映射关系，对应字符与字符出现的次数，符合业务
         * 字符是不允许重复的，所以作为KEY,是Character类型
         * 字符出现的次数是可以重复的，作为Value,是Integer类型*/
        Map<Character, Integer> map = new HashMap<>();
        //3.获取到用户输入的每一个字符
        /*String底层维护的是char[]*/
        for (int i = 0; i < input.length(); i++) {
            char key = input.charAt(i);
            System.out.println("获取到的第" + (i + 1) + "个字符" + key);
            //4.统计一下每个字符出现的次数，存起来，存到map里
            //4.1根据本轮循环获取到的字符获取字符出现的次数
            Integer value = map.get(key);
            //4.2判断次数的情况
            if (value == null) {
                //如果是第一次出现，次数还是默认值null
                map.put(key, 1);
                //就存入：本字符key,次数是1
            } else {//如果不是第一次出现
                map.put(key, value + 1);

            }

        }
        System.out.println("各个字符出现的个数为：");
        System.out.println(map);
    }
}
/**请输入您要统计的字符串：
 swjqo
 获取到的第1个字符s
 获取到的第2个字符w
 获取到的第3个字符j
 获取到的第4个字符q
 获取到的第5个字符o
 各个字符出现的个数为：
 {q=1, s=1, w=1, j=1, o=1}*/